The present invention relates generally to network structures, and more particularly to an apparatus for transmitting voice data from one network location to one or more other network locations.
Network systems typically transmit data from one network location (a source location) to another network location (a destination location) by first placing the data into xe2x80x9cpacketxe2x80x9d form. A packet can include information that allows a data packet to be directed from one network location to another by including certain information, such as a xe2x80x9cdestination address,xe2x80x9d that identifies the destination location. Such packet identifying information is typically placed in an initial portion of the packet., often referred to as a xe2x80x9cheader.xe2x80x9d The header will, include a number of fields, each of which includes a particular type of packet information. The data carried by the packet is often referred to as a xe2x80x9cpayload.xe2x80x9d The process of generating packets from data is often referred to as xe2x80x9cpacketization.xe2x80x9d In particularly large networks, packet data can be transferred from a source location to a destination location by way of one or more network nodes. A transmission from one node to the next can be referred to as a xe2x80x9chop.xe2x80x9d
One particular type of data that is greatly desired but that can be problematic for many network transmission structures, is voice data. Voice data typically involves utilizing an analog-to-digital converter to convert an analog voice signal into digital form. The digital voice data can then be processed further. As just one example, digital voice data can be xe2x80x9ccompressedxe2x80x9d into a more compact form. More compact voice data can be transmitted over a given bandwidth, but at the cost of some fidelity.
One particular way of transmitting voice data is xe2x80x9cVoice over Internet Protocolxe2x80x9d (often referred to as xe2x80x9cVoIPxe2x80x9d). Internet Protocol (IP) is one particular protocol for transmitting data over a network structure having devices that recognize the IP protocol. The wide reach of the Internet and wide use of IP in networks makes VoIP a compelling application. VoIP can enable a local network, such as that shared by a corporation, to allow voice communications between the various users in addition to conventional sharing of data and/or applications. Because most connections to the Internet are by way of a conventional telephone line other higher speed connections (IDSN, T-1, or xDSL, as just a few examples) the use of VoIP can provide long distance voice communications at considerable cost savings by avoiding the toll charges required by conventional long distance telephone calls. VoIP can prove extremely valuable to the telecommuter, as data and voice can both be transmitted to an office over the same wire, allowing efficient communication between the remote worker and other on-site workers.
Another advantage of VoIP is the ability to transmit the same data packets to multiple destinations (multicast). This enables teleconferencing to occur over very large distances without the unwanted expense of a conventional long distance telephone, service provider.
The transmission of voice data over the Internet is also referred to as xe2x80x9cInternet Telephony.xe2x80x9d It is expected that Internet Telephony will be a widely used application for the Internet.
The transmission of voice data over network structures can present different concerns from those present in the transmission of other data over network structures. One important concern is that of delay. For example, for many types of data, delay may be acceptable or not relevant. Whether or not text and/or images are not immediately viewable is of less concern than if the text and/or images are corrupted. Accordingly, most protocols are concerned with reassembling data in the proper order; and less concerned with the overall rate at which the data is transmitted. As just one example, a data file can be broken down into packets that are transmitted in a particular order. The packets may be received in a different order, however. Many protocols allow the packets to be subsequently reassembled in the correct order. This is in sharp contrast to voice data. Attempting to have a conversation over a data network can be extremely awkward when undue delay is introduced in the transmission of the voice data. The natural flow of conversation is often interrupted as a delay may be misinterpreted as the end of one person""s conversation. Further, if data is lost, or multiple packets take too long to reassemble, speech can be broken up, with portions of the conversation being dropped.
Another concern in voice data over networks is the processing latency introduced by conventional approaches. In particular, the packetization of single channel data can result in inefficient use of network bandwidth, as an entire header must be created, even if the corresponding payload is relatively small.
One approach to voice over data networks is the personal computer (PC) Internet phone or Internet videophone. Such approaches typically involve utilizing the microphone and sound card of a PC in conjunction with associated software. The central processing unit (CPU) of the PC, in conjunction with an analog-to-digital converter (typically in the sound card), converts the voice signal into digital form, and then transmits the data in a conventional fashion as a series of packets.
Another more expensive approach, typically utilized for multiple voice channels, is that of the voice server. A voice data server system is set forth in FIG. 1, and designated by the general reference character 100. A voice data server.system 100 is shown to include a number of different voice data sources. Set forth in FIG. 1 are a number of devices, including conventional telephones 102-a and 102-b, as well as a fax machine 102-c. The voice data server system 100 receives conventional voice data (and other data, such as fax data) from a number of different conventional sources and transmits the voice data over the Internet (or some other network structure) in packet form. Each particular conventional voice source (such as telephones 102-a and 102-b) can be considered a separate voice channel when a conversation is taking place.
As shown in FIG. 1, the devices (102-a to 102-c) are coupled to a switching device 104, such as a private branch exchange (xe2x80x9cPBXxe2x80x9d). The switching device 104 allows switching between devices (102-a to 102-c), and in addition, allows the devices (102-a to 102-c) to be switched to an internet server 106. The connection to the internet server 106 can be a high-speed multiplexed line, such as a xe2x80x9cT-1xe2x80x9d carrier line. In such an arrangement, up to 24 voice channels can be carried by the T-1 line to the internet server 106.
The internet server 106 includes a conventional multiplexer interface 108 that de-multiplexes interface 108 that de-multiplexes the conventional voice data. The conventional voice data is then processed by a central processing unit 110, which packetizes data for each channel, and then transmits the packetized voice data to a network interface 112. The packets of voice data can then be output to a network structure, such as the Internet, by way of the network interface 112. The network interface 112 is coupled to a network media line 114.
The voice data server system 100 can also receive voice data packets by way of the network media line 114. Voice packets, each including voice data for a single channel, are stripped of their associated header (de-packetized), and the resulting voice data payload passed on to the multiplexer interface 108. The multiplexer interface 108 then outputs the voice data on the appropriate multiplexed channel. The data is then provided to the desired phone (102-a and 102-b) and/or other device (such as fax machine 102-c) by the switching device 104.
A drawback to many conventional voice-over-network approaches arises out of the intermittent or xe2x80x9casynchronousxe2x80x9d nature of voice data from multiple sources (channels). In particular, multiple voice channels will require multiple packetization of voice data. In the event multiple voice channels have data, one channel may be delayed as the others are packetized.
Another drawback to conventional voice over network approaches is the processing required to packetize and de-packetize the data. Data for each voice channel is given a particular header by a CPU. The CPU may have to make multiple memory accesses to translate a voice channel into a header. Conversely, a receiving system CPU must process header information, and forward the attached data to the appropriate channel for the multiplexer interface. Such a processing constraint can be particularly acute when multiple voice channels are transmitted from or received at the same voice server.
An example of a conventional voice server conversion of voice channel data may be understood with reference to FIGS. 2a and 2b. FIG. 2a sets forth a voice server system 200 that receives, a particular set of out-going voice data from xe2x80x9cnxe2x80x9d voice channels. The first three voice channels are shown as items 202-1 to 202-3, and the last voice channel is shown as 202-n. Voice channels 202-1 to 202-3 are shown to receive voice data of differing amounts. In particular, voice channel 202-1 receives a relatively small amount of voice data. The data on voice channel 202-1 is shown as VD1 and will fit within the maximum packet length. The data on voice channel 202-2 is shown as VD2, and exceeds the maximum packet length, and so must be packetized into two packets. The data on voice channel 202-3 is shown as VD3, and is greater than that VD1, and less than that of VD2.
The voice server system 200 packetizes the voice data and transmits the packets on a network line 204. The VD1 data is shown to be included in a first packet 206-1. The first packet 206-1 includes a header (H1) and the VD1 data payload. The VD2 data is shown to be included in two packets 206-21 and 206-22. Packet 206-21 includes a header H21 and a first payload of the VD2 data, shown as VD21. Packet 206-22 includes a header H22 and a second payload of the VD2 data, shown as VD22. The VD3 data is included in packet 206-3. Packet 206-3 is shown to include header H3 and the voice data payload VD3.
FIG. 2b sets forth the same system as FIG. 2a, but illustrates the reception of a different set of voice data packets. In the example of FIG. 2b, voice data packets are shown as items 208-1 to 208-3. Unlike the case of FIG. 2a, the payload carried by each packet is of relatively small size. It is noted that each packet includes a header (H1-H3) and corresponding voice data payload (VD1-VD3).
It is clear that the above-mentioned forms of transmitting voice over network wires is highly inefficient. It would therefore be desirable to arrive at some way of transmitting voice data over a network structure that can address the asynchronous (intermittent) nature of voice data. It would also be desirable to arrive at some way of processing voice data that enables more rapid processing where multiple voice channels are involved. It would also be desirable to transmit voice data over a network structure in a more efficient manner.
According to the disclosed embodiments a system provides for the rapid storage and/or retrieval of voice channel data by utilizing a content addressable memory (CAM) to generate a channel identifying value according to voice data packet identifying information. The channel identifying output value can be utilized to generate address values for a buffer memory having different locations for storing particular voice channel data.
According to one aspect of the disclosed embodiments, a channel identifying output provided by a CAM can be applied to address generating circuits to generate a channel base address for a buffer memory. A buffer memory can include a number of different locations, accessed by channel base addresses, where each different location stores voice data for a particular voice channel.
According to another aspect of the disclosed embodiments, a channel identifying output provided by a CAM can be processed by a processor or the like to generate channel base addresses for a buffer memory.
According to another aspect of the embodiments, the CAM generates storage addresses for multiple voice channels transmitted in a single packet.
According to another aspect of the embodiments, the CAM generates group identification values from the voice channel identifying information. The group identification values can be used to group different voice channels into a single packet for transmission to a network destination.
According to another aspect of the embodiments, incoming voice channel data can be stored in a buffer memory as voice data, and out-going voice data can be stored in the buffer memory as voice data with an associated multiplexed header.
According to another aspect of the embodiments, incoming voice channel data can be received by way of a network input and a conventional time division multiplexed voice line.
According to another aspect of the embodiments, voice channel data can be stored in a buffer memory that can be accessed by the data and address bus of a local processor.
According to another aspect of the disclosed embodiments, voice channel data is stored in a voice packet buffer memory system that includes a static random access memory.
According to the disclosed embodiments, voice channel data is stored in a voice packet buffer memory system that includes an expansion memory interface for accommodating additional memory devices that can store voice channel and other data.